package com.zhongge.util;

import java.sql.*;
import java.util.ResourceBundle;

/**
 * @ClassName DbUtil
 * @Description TODO JDBC操作的工具类
 * @Author zhongge
 * @Version 1.0
 */
public class DbUtil {
    /**
     * 工具类中的构造方法一般都是私有的
     * 因为工具类中的方法一般都是静态的--》直接使用 类名. 来调用
     */
    private DbUtil() {
    }

    private static ResourceBundle bundle = ResourceBundle.getBundle("com.zhongge.jdbc01.jdbc");
    private static String driver = bundle.getString("driver");
    private static String url = bundle.getString("url");
    private static String userName = bundle.getString("userName");
    private static String password = bundle.getString("password");


    //注册驱动

    /**
     * 为什么注册驱动写在静态代码块中？
     *
     *  因为只需要注册一次即可，也就是因为类只加载一次 所以写在这合适
     *  一次注册可以管多个连接
     */
    static {
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    //获取连接
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, userName, password);
    }

    //释放资源
    public static void close(Connection connection, Statement statement,
                             ResultSet resultSet){
        if(resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        if(statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        if(connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
